﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using BLL;
using DAL.Entity;
using DAL.Persistencia;

namespace NewTierra.App_Code
{
    public abstract class BasePage : System.Web.UI.Page
    {
        Usuario UsuarioLogado = new Usuario();

        public void PageLoad()
        {
            if (ObterPerfilLogado() <= 0)
            {
                Session.Abandon();
                FormsAuthentication.SignOut();
                Response.Redirect("~/Pages/Login.aspx");
            }
        }

        public int ObterPerfilLogado()
        {
            try
            {
                if ((HttpContext.Current.Session == null) ||
                    (HttpContext.Current.Session["emailLogado"] == null) ||
                    (HttpContext.Current.Session["emailLogado"].ToString() == ""))
                    throw new ApplicationException("");

                UsuarioLogado = new UsuarioDAL().ObterPorEmail(HttpContext.Current.Session["emailLogado"].ToString());

                HttpContext.Current.Session["perfilLogado"] = UsuarioLogado.Perfil_id;

                if (UsuarioLogado == null)
                    throw new ApplicationException("");

                return (int)UsuarioLogado.Perfil_id;
            }
            catch (Exception ex)
            {
                if (ex is ApplicationException)
                    Response.Redirect("~/Pages/Login.aspx");
                throw;
            }
        }

        public bool VerificarPerfilEdicao(PerfilUsuario perfilAutorizado, bool redirecionaSeFalso = false)
        {
            if (Convert.ToInt32(HttpContext.Current.Session["perfilLogado"].ToString()) != (int)perfilAutorizado)
                if (redirecionaSeFalso)
                    Response.Redirect("~/Pages/Index.aspx");
                else
                    return false;
            return true;
        }

        public bool VerificarPerfilVisualizacao(PerfilUsuario perfilAutorizado, bool redirecionaSeFalso = false)
        {
            if (Convert.ToInt32(HttpContext.Current.Session["perfilLogado"].ToString()) != (int)perfilAutorizado)
                if (redirecionaSeFalso)
                    Response.Redirect("~/Pages/Index.aspx");
                else
                    return false;
            return true;
        }
    }
}